## Color picker

### Overview
I wanted to make a light theme, so I needed a way to darken my terminal colors. Then it evolved into a color slider that actually still doesn't do that. All of the formulas are sourced from Wikipedia and I'm pretty sure it mostly works.

### Requirements

I only ever tested this on debian-based linux in xterm and truecolor-patched urxvt. Built with Rust stable.

Requires a truecolor terminal to work.

### Building

`cargo run` should run it just find.

I've only tested this on 64 bit Linux but `cargo build --release` should put a binary optimized for your system into the `target` directory.

### Usage

Controls print out at the top. Select an attribute and use arrow keys to increase/decrease.
You can pass a six digit rgb hex string as an argument, e.g. `colorconv ffaa00` or `cargo run ffaa00`. You can reset to this value at any time while running the gui. It runs 100 iterations of the unit test every time it starts.

### Todo/Wishlist

- CLI for scripting
- HSL, maybe
- Various color algorithms (complimentary, etc)
  - Display and update all below
  - Theme generator (vim, xresources, base16?)
  - Convert to and from 256 color
  - Arbitrary conversions for the whole set
- Output handling (save to file, copybuffer, print to stdout at the end, maybe store in a vec)
- Fancier UI features
  - Dynamic updates, handle resize
  - Quit confirmation prompt
  - Background color
  - Better color preview
  - Text Input Prompts
  - Increment modifier
  - Smart Increments that make one rgb change at a time
- Cleanup the issue where termion sees arrows as A&B sometimes
- Refactoring
  - Overall better "source of truth" for the colors during the loop, maybe some sort of struct/enum
  - Better pattern for input mapping than a bunch of janky string matches
  - Intentionally make colorconv into a crate/mod
  - Multiple binaries?
  - "app" object *could* be display and input agnostic to make CLI/GTK possible and improve unit tests
- Add unit tests for the app logic
